package com.xicheng.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 订单信息表
 * </p>
 *
 * @author com.xicheng
 * @since 2025-09-08
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("order_info")
public class OrderInfo extends Model<OrderInfo> {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 创建时间（订单生成时间）
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 修改时间（订单状态更新时间）
     */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /**
     * 讲师用户编号（关联讲师表）
     */
    @TableField("lecturer_user_no")
    private Long lecturerUserNo;

    /**
     * 讲师名称（冗余存储）
     */
    @TableField("lecturer_name")
    private String lecturerName;

    /**
     * 用户编号（关联用户表）
     */
    @TableField("user_no")
    private Long userNo;

    /**
     * 用户手机号
     */
    @TableField("mobile")
    private String mobile;

    /**
     * 用户注册时间（冗余，方便统计新老用户）
     */
    @TableField("register_time")
    private LocalDateTime registerTime;

    /**
     * 订单号（业务唯一标识）
     */
    @TableField("order_no")
    private Long orderNo;

    /**
     * 课程ID（关联课程表）
     */
    @TableField("course_id")
    private Long courseId;

    /**
     * 课程名称（冗余存储）
     */
    @TableField("course_name")
    private String courseName;

    /**
     * 应付金额（原价）
     */
    @TableField("price_payable")
    private BigDecimal pricePayable;

    /**
     * 优惠金额（折扣/优惠券等）
     */
    @TableField("price_discount")
    private BigDecimal priceDiscount;

    /**
     * 实付金额（应付-优惠）
     */
    @TableField("price_paid")
    private BigDecimal pricePaid;

    /**
     * 平台收入（实付金额中平台分成部分）
     */
    @TableField("platform_profit")
    private BigDecimal platformProfit;

    /**
     * 讲师收入（实付金额中讲师分成部分）
     */
    @TableField("lecturer_profit")
    private BigDecimal lecturerProfit;

    /**
     * 交易类型：1=线上支付，2=线下支付
     */
    @TableField("trade_type")
    private Integer tradeType;

    /**
     * 支付方式：1=微信支付，2=支付宝支付
     */
    @TableField("pay_type")
    private Integer payType;

    /**
     * 购买渠道：1=Web，2=小程序，3=App
     */
    @TableField("channel_type")
    private Integer channelType;

    /**
     * 订单状态：1=待支付，2=支付成功，3=支付失败，4=已关闭
     */
    @TableField("order_status")
    private Integer orderStatus;

    /**
     * 是否显示给讲师：1=是，0=否
     */
    @TableField("is_show_lecturer")
    private Integer isShowLecturer;

    /**
     * 是否显示给用户：1=是，0=否
     */
    @TableField("is_show_user")
    private Integer isShowUser;

    /**
     * 客户备注（用户下单时填写）
     */
    @TableField("remark_cus")
    private String remarkCus;

    /**
     * 后台备注（运营/客服添加）
     */
    @TableField("remark")
    private String remark;

    /**
     * 支付时间（订单状态为2时有效）
     */
    @TableField("pay_time")
    private LocalDateTime payTime;

    @Override
    public Serializable pkVal() {
        return this.id;
    }
}
